package com.ruoyi.common.core.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.math.BigDecimal;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DiffLog {
    /**
     * 字段名称
     * @return name
     */
    String name() default "";

    /**
     * BigDecimal 精度，默认:-1(默认不开启BigDecimal格式化)
     * @return length
     */
    int scale() default -1;

    /**
     * BigDecimal 舍入规则 默认:BigDecimal.ROUND_HALF_EVEN
     * @return
     */
    int roundingMode() default BigDecimal.ROUND_HALF_EVEN;

    /**
     * 是否忽略该字段
     * @return ignore
     */
    boolean ignore() default false;

    /**
     * 该字段为 Key, List 项必须有一个为 true, 多个 key 时将会拼接
     * @return
     */
    boolean key() default false;

    /**
     * 嵌套对象对比
      * @return
     */
    boolean nested() default false;

    /**
     * 忽略日志，只记录变更
     * @return
     */
    boolean ignoreLog() default false;

    /**
     * 是否JSON
     * @return
     */
    boolean isJson() default false;

    /**
     * 字符格式化(只格式化一次) 格式 {"0=开启", "1=关闭"}
     * @return
     */
    String[] format() default {};
}